/*
 * Comprador.java
 *
 */

package ar.com.educacionit.vehiculos.entidades;

import ar.com.educacionit.base.entidades.Persona;
import ar.com.educacionit.hibernate.manager.EducacionITSessionManager;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author Sebastian S. Sanga <SebastianSanga@educacionIT.com.ar>
 */
public class Comprador extends Persona {
    
    /**
     * Creates a new instance of Comprador
     */
    public Comprador() {
    }
    
    public Comprador(String nombre, String apellido, String nroDocumento, double presupuesto) {
        super(nombre,apellido,nroDocumento);
        setPresupuesto(presupuesto);
    }
    
    // Atributos
    private double presupuesto;
    private int id;

    
    public String toString(){
        return getApellido() + ", " + getNombre();
    }

    public double getPresupuesto() {
        return presupuesto;
    }

    public void setPresupuesto(double presupuesto) {
        this.presupuesto = presupuesto;
    }

    public static Comprador obtenerPorPK(long unId) throws HibernateException {
        // Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();
        
        // Construye la consulta
        String query = "FROM ar.com.educacionit.hibernate.entities.Comprador where id = " + unId;
        
        // Realiza la consulta
        List<Comprador> elComprador = session.createQuery(query).list();
        
        // Cierra la sesion de trabajo
        session.close();
        
        // Retorna el concesionario
        if( elComprador != null && elComprador.size() > 0)
            return elComprador.get(0);
        else
            return null;

    }

    public static List obtenerTodos() throws Exception
    {
        // Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();

        // Realiza la consulta
        List<Comprador> losComprador = session.createQuery("FROM ar.com.educacionit.hibernate.entities.Comprador").list();

        // Cierra la sesion de trabajo
        session.close();

        // Retorna los concesionarios
        return losComprador;

    }    
    
    public void insertar() throws Exception
    {

        // Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();

        // Genera una transaccion
        Transaction tx = session.beginTransaction();

        // Inserta el concesionario
        session.save(this);

        // Compromete los cambios
        tx.commit();

        // Cierra la sesion de trabajo
        session.close();

    }
    
    public void actualizar() throws Exception
    {
        // Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();

        // Genera una transaccion
        Transaction tx = session.beginTransaction();

        // Actualiza el concesionario
        session.update(this);

        // Compromete los cambios
        tx.commit();

        // Cierra la sesion de trabajo
        session.close();

    }    

    public void eliminar() throws Exception
    {
        // Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();

        // Genera una transaccion
        Transaction tx = session.beginTransaction();

        // Elimina el concesionario
        session.delete(this);

        // Compromete los cambios
        tx.commit();

        // Cierra la sesion de trabajo
        session.close();        
    }

    public int getId(){
        return this.id;
    }
    public void setId(int id){
        this.id = id;
    }
}
